package orm

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"go-mall/global"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"gorm.io/gorm/schema"
)

func GormMysql() *gorm.DB {
	MySql := global.CONFIG.Mysql
	fmt.Println("MYSQL数据库", MySql.Dsn())
	if MySql.Dbname == "" {
		return nil
	}
	var ormLogger logger.Interface

	if gin.Mode() == "debug" {
		ormLogger = logger.Default.LogMode(logger.Info)
	} else {
		ormLogger = logger.Default
	}

	db, err := gorm.Open(mysql.New(mysql.Config{
		DSN:                       MySql.Dsn(),
		DefaultStringSize:         191,   // string 类型字段的默认长度
		SkipInitializeWithVersion: false, // 根据版本自动配置
	}), &gorm.Config{
		Logger: ormLogger,
		NamingStrategy: schema.NamingStrategy{
			SingularTable: true, // 表配置 命名策略 表默认不加s 如：user 不会加s
		},
	})
	if err != nil {
		panic("无法连接数据库")
		return nil
	} else {
		sqlDB, _ := db.DB()
		// 设置空闲连接池中的最大连接数
		sqlDB.SetMaxIdleConns(10)
		// 设置数据库的最大打开连接数
		sqlDB.SetMaxOpenConns(100)
		return db
	}

}
